package spring.webapp.anmeldesystem.persistence.dao;

import java.util.List;

import spring.webapp.anmeldesystem.entity.Admin;
import spring.webapp.anmeldesystem.entity.Professor;
import spring.webapp.anmeldesystem.entity.Student;
import spring.webapp.anmeldesystem.entity.User;

/**
 * @autor Songhua Cui
 */
public interface AdminDao {
	
	/**
	 * @param email address of the loginned user. 
	 * @return {@link Admin}.
	 */
	Admin getAdminByEmail(String email) ;
	
	/**
	 * 
	 * @return list of {@link User}
	 */
	List<User> getAllUsers();

	/**
	 * @param student {@link Student}.
	 * @param faculity 
	 */
	void addStudent(Student student, String faculity);

	/**
	 * @param student {@link Student}.
	 */
	void updateStudent(Student student);

	/**
	 * @param student {@link Student}.
	 */
	void resetStudent(Student student);

	/**
	 * @param professor {@link Professor}.
	 * @param faculity 
	 */
	void addProfessor(Professor professor, String faculity);

	/**
	 * @param professor
	 */
	void updateProfessor(Professor professor);

	/**
	 * @param professor
	 */
	void resetProfessor(Professor professor);
	
	/**
	 * @param password
	 */
	void addPassword(long id);

	/**
	 * 
	 * @param admin
	 */
	void resetPassword(Admin admin);

	void deleteAdmin(String email);

	void addAdmin(Admin admin);
	
}
